#include <iostream>
#include "ThreadPool.hpp"
#include "log.hpp"
#include <stdio.h>
#include <stdarg.h>
#include <memory>
#include "log.hpp"
#include "Task.hpp"
#include <ctime>
using namespace std;

int main()
{
    srand(time(nullptr) ^ getpid() ^ pthread_self()); // 让它的随机性更好一点

    // 测试线程池
    unique_ptr<ThreadPool<Task>> tp = std::make_unique<ThreadPool<Task>>(5);
    tp->Init();  // 线程池初始化
    tp->Start(); // 线程池开始

    int tasknum = 10;
    while (tasknum--)
    {
        int a = rand() % 10 + 1;
        usleep(1234);
        int b = rand() % 5 + 1;

        tp->Enqueue(Task(a, b));
        sleep(1);
    }

    tp->Stop(); // 线程池终止
    tp->Join(); // 回收所有线程

    return 0;
}